package main

import (
	"fmt"
	"strings"
)

func main() {
	var str = "hello_world_aa_bb"
	parts := strings.SplitN(str, "_", 2)
	fmt.Printf("%#v", parts)
	fmt.Printf("分割后的类型： %T \n", parts)
	testA()
}

func testA() {

	// 字符串长度
	str := "hello"
	fmt.Println("hello字符串的长度：", len(str))

	// 字符串遍历
	for i := 0; i < len(str); i++ {
		fmt.Printf("索引为: %d 值为 %c \n", i, str[i])
	}

	// 字符串拼接
	str1 := "hello"
	str2 := "world"
	str3 := str1 + " " + str2
	fmt.Println(str3)

	ss := fmt.Sprintf("%s %s", str1, str2)
	fmt.Println(ss)

	// 字符串切割
	sa1 := "hello,world,ok"
	sa2 := strings.Split(sa1, ",")
	fmt.Println(sa2)
	fmt.Printf("分割后的类型： %T \n", sa2)

	// 字符串包含
	b := strings.Contains(sa1, "ok")
	fmt.Println("字符串包含contains: ", b)

	// 字符串前缀
	b1 := strings.HasPrefix(sa1, "he")
	fmt.Println("字符串前缀HasPrefix: ", b1)

	// 字符串后缀
	b2 := strings.HasSuffix(sa1, "ok1")
	fmt.Println("字符串后缀HasSuffix: ", b2)

	// 字符串索引
	index := strings.Index(sa1, "or")
	fmt.Println("字符串索引Index: ", index)
	// 字符串最后一次出现的位置
	index2 := strings.LastIndex(sa1, "o")
	fmt.Println("字符串最后一次出现的位置LastIndex: ", index2)

	// 字符串转换
	str4 := "hello world ok"
	str5 := strings.ToUpper(str4)
	fmt.Println("字符串转换ToUpper: ", str5)

	str6 := strings.ToLower(str4)
	fmt.Println("字符串转换ToLower: ", str6)
	// 字符串join
	str7 := []string{"hello", "world", "ok"}
	fmt.Printf("字符串join前的类型： %T ,值为: %+v \n", str7, str7)
	str8 := strings.Join(str7, "_")
	fmt.Println("字符串join: ", str8)

}
